package Socket;

import java.io.DataInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.logging.Level;
import java.util.logging.Logger;


public class Servidor {

    public ServerSocket serverSocket;
    Integer puerto=5000;

    Socket socketServicio = null;
    ObjectOutputStream salida;
    ObjectInputStream entrada;
    int autoId=0;

    private Servidor() {

        autoId++;
        
        try {
            serverSocket=new ServerSocket(puerto);
            esperoCliente();


          salida = new ObjectOutputStream( socketServicio.getOutputStream() );

          

          
             salida.writeObject(autoId);
             salida.flush();

             System.out.println ("Enviado " + autoId);


          entrada = new ObjectInputStream( socketServicio.getInputStream() );

                                   System.out.println ("Espero recibir tecla");


           while(true){


            recibirTecla();


            }




        }catch(IOException ex){

            System.out.println(ex);
            System.exit(1);
        }
        
    }

    private void esperoCliente() {

              try {
                    System.out.println("estoy escuchando");
                    //Al aceptar la conexión el server obtiene un nuevo socket sobre un puerto diferente
                    socketServicio = serverSocket.accept();
                    System.out.println ("Conectado con cliente de " + socketServicio.getInetAddress());
     

              } catch( IOException e ) {System.out.println( e );}
        	
     
    }


    public void enviarVector(){

            // Enviar un objeto
         //   salida.writeObject(mensaje);
         //   System.out.println ("Enviado " + mensaje.toString());

        
    }


     public void recibirTecla(){
        
        try {
        
            int tecla = (Integer) entrada.readObject();
            System.out.println("Recibido " + tecla);
        
        } catch (Exception ex) {
            Logger.getLogger(Servidor.class.getName()).log(Level.SEVERE, null, ex);
        }

    }



    public void cerrar(){
    //Cerrar los canales de entrada y salida que se hayan abierto
    try {
        salida.close();
        entrada.close();
        } catch (IOException ex) {System.out.println("Error al cerrar"); }
}




      public static void main(String[] args) {
          //  try {
                new Servidor();
        //    } catch (ClassNotFoundException ex) { /**TODO**/   }
          
       }
}


